#ifndef __FILE_H__
#define __FILE_H__

#include <iostream>
#include <fstream>
#include <string>

#include "datatypes.h"

#define		BUFFER_SIZE		512

using std::ofstream;
using std::fstream;
using std::string;

class File{
	public:
	File(string name);
	virtual ~File();
	
	/*
	Crea un archivo para escritura, devuelve true si tuvo exito. Cierra el archivo.
	*/
	bool createFile(void);
	
	/*
	Abre el archivo, si no puede retorna false.
	*/
	bool 		openFile(void);
	/*
	Cierra el archivo
	*/
	void		closeFile(void);
	/*Devuelve true si el archivo esta vacio
	*/ 
	bool 		empty(void);
	
	long size(void);
	
	bool removeFile(void);
	
	int renameFile(string newName);
	
	/*
	Lee una linea delimitada por '\n' o por tamaño de BUFFER_SIZE, si llega a fin de archivo, devuelve true, sino false
	*/
	bool 		readLine(void);
	
	string getName(void)
	{
		return name;
	}

	protected:
	
	string				buffer;
	string 				name;
	fstream 			fdFile;  //file descriptor del documento		
};

#endif // __FILE_H__
